cmake_minimum_required (VERSION 3.12)
################################### Mimic ###################################
# simple GenICam wrapper for accessing GenICam devices in C/C++, C#, ...    #
#################################################################333#########
cmake_policy(SET CMP0048 NEW)  # set version string with project() command

option(MIMIC_BUILD_TESTS "enable tests of mimic library" ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

######################### Project #########################
# define the project and the core version of the library  #
###########################################################
project(Mimic
    VERSION 0.0.1 
    DESCRIPTION "simple GenICam wrapper for accessing GenICam devices in C/C++, CSharp, ..."
)

############# Settings ############
# Configure project settings      #
###################################
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

################# Libraries #################
#   Define external third party libraries   #
#############################################
include(FetchGenAPI)
FetchGenAPI(genapi_RUNTIME_DIR)
message("genapi_RUNTIME_DIR: ${genapi_RUNTIME_DIR}")

############# Subdirectories ############
# Add subdirectories / targets          #
#########################################
add_subdirectory(genTL)
add_subdirectory(mimic)

if(MIMIC_BUILD_TESTS)
  if (MSVC)
    set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # set policy 0077 in subdirectory project (googletest)
    set(gtest_force_shared_crt ON)
  endif()
  include(FetchContent)
  FetchContent_Declare(
    googletest
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG        release-1.12.1
  )
  FetchContent_MakeAvailable(googletest)

  enable_testing()
  add_subdirectory(tests)
endif()

#add_subdirectory(binding/clr)

add_subdirectory(doc)
